# 导入浏览器对象
from selenium import webdriver
# 导入时间模块
import time
# 导入元素定位功能
from selenium.webdriver.common.by import By
# 导入数据请求模块
import requests
# 数据解析模块
import parsel


# 实例化一个浏览器对象
driver = webdriver.Chrome()
#一定要在实例化之前先确保好默认路径下安装了谷歌浏览器，并在python文件夹下存放了对应的驱动
#可以查看我的博客 https://blog.csdn.net/u011027547/article/details/122511740

# 打开浏览器的窗口
driver.get('https://www.jsyks.com/kmy-mnks')
# 等待一段时间用于加载页面
time.sleep(2)
# 最大化浏览器的窗口
driver.maximize_window()

# 隐式等待，10秒钟内只要找到了元素就开始执行，10秒钟后未找到，就超时，也就是说一直查找，直到超出了10秒；
driver.implicitly_wait(10)

# elements 返回的是一个列表对象，每一个列表就是一道题目
lis = driver.find_elements(By.CSS_SELECTOR, '.Content>li')
# print(len(lis))
# print(lis)
for li in lis:
    time.sleep(0.2)  # 随机休眠
    rid = li.get_attribute('c')
    # print(rid)
    url = f'https://tiba.jsyks.com/Post/{rid}.htm'
    # 获取到响应体对象的文本数据
    response = requests.get(url=url).text
    # 文本数据转对象
    selector = parsel.Selector(response)
    answer = selector.css('#question u::text').get()# #question > h1 > u
    # print(answer)
    # 重新赋值
    if answer == '对':
        answer = '正确'
    elif answer == '错':
        answer = '错误'
    # else:  不确定的情况
    # print(answer)
    bs = li.find_elements(By.CSS_SELECTOR, 'B')#得到了一道题目中的所有选项
    for b in bs:#
        # 获取选项的内容
        choose = b.text
        if len(choose) > 2:#A、间歇制动
            choose = choose[0]#取得 A 这个选项
        if answer == choose:#如果选择和答案一致
            b.click()#点击正确选项

# 提交试卷
driver.find_element(By.CSS_SELECTOR, '.btnJJ').click()


# 添加阻塞，如果注释掉那么会直接关闭浏览器，主要是看看答卷的效果特意加的。
input()

# 关闭浏览器
driver.quit()